public interface ${daoName} {

    //---------增(start)---------
    /**
     * 插入
     * - 向数据库插入null时, mybatis要求必须指定jdbcType属性, 否则会报错
     * @param ${entityName?uncap_first} 待插入的数据
     */
    int insert(@Param(value = "${entityName?uncap_first}") ${entityName} ${entityName?uncap_first});

    /**
     * 批量插入
     * - 向数据库插入null时, mybatis要求必须指定jdbcType属性, 否则会报错
     * @param ${entityName?uncap_first}s 待插入的所有数据
     */
    int insertBatch(@Param(value = "${entityName?uncap_first}s") List<${entityName}> ${entityName?uncap_first}s);
    //---------增(end)---------

    //---------删(start)---------
    /**
     * 根据主键删除
     * @param id 主键
     */
    int deleteById(@Param(value = "id") Serializable id);

    /**
     * 根据主键批量删除; 当idList为null或者空时不删除任何数据(where条件为1=2, 避免全表删除)
     * @param idList 主键集合
     */
    int deleteBatchIds(@Param(value = "idList") Collection<? extends Serializable> idList);
    //---------删(end)---------

    //---------改(start)---------
    /**
     * 根据主键更新非空字段
     * @param ${entityName?uncap_first} 待更新的数据
     */
    int updateById(@Param(value = "${entityName?uncap_first}") ${entityName} ${entityName?uncap_first});
    //---------改(end)---------

    //---------查(start)---------
    /**
     * 根据主键查找数据
     * @param id 主键
     */
    ${entityName} selectById(@Param(value = "id") Serializable id);

    /**
     * 根据主键集合批量查找数据
     * @param idList 主键集合
     */
    List<${entityName}> selectBatchIds(@Param(value = "idList") Collection<? extends Serializable> idList);

    /**
     * 动态条件查找
     * @param ${entityName?uncap_first} 动态条件
     */
    List<${entityName}> selectByDynamicCondition(@Param(value = "${entityName?uncap_first}") ${entityName} ${entityName?uncap_first});

    /**
     * 动态条件count
     * @param ${entityName?uncap_first} 动态条件
     */
    int countByDynamicCondition(@Param(value = "${entityName?uncap_first}") ${entityName} ${entityName?uncap_first});

    /**
     * 动态条件判断是否存在
     * @param ${entityName?uncap_first} 动态条件
     */
    boolean existsByDynamicCondition(@Param(value = "${entityName?uncap_first}") ${entityName} ${entityName?uncap_first});
    //---------查(end)---------

}